Providing a static internet protocol address pointer to a computer having a dynamic internet protocol address

ABSTRACT

Providing packet forwarding to a connected customer computer that does not have a static Internet Protocol (IP) address. A service provider computer receives a packet for the connected customer computer. The service provider computer then determines a current IP address of the connected customer computer. A new packet containing the current IP address of the connected customer computer is then generated by the service provider computer. The service provider computer then transmits the new packet to the connected customer computer.

CROSS-REFERENCE TO RELATED APPLICATIONS AND CLAIM OF PRIORITY

Priority of U.S. Provisional patent application Ser. No. 60/555,514filed on Mar. 22, 2004 is claimed.

TECHNICAL FIELD

This invention relates to a service provider server that connects to acustomer server to provide Internet access to the customer server.

BACKGROUND OF THE INVENTION

In today's society, the Internet has become an important means ofcommunication. The Internet is a network of interconnected computersthat allow two computers to transmit data packets between one another tocommunicate and share information. Computers may be connected to othercomputers on the Internet by traditional analog telephone lineconnections, coaxial connections, T1 communications line, T3 linecommunications line, digital subscriber line service, or any othercommunications medium used to connect computer systems.

As the Internet has become a more popular form of communication,businesses desire to be connected to the Internet to provide services tocustomers and reach a broader market with advertising. In the past,businesses have used service provider servers to maintain websites forboth advertising and providing service. Service provider servers areservers maintained by a third party that are permanently connected tothe Internet to provide internet connections to users that connect tothe service providers servers via traditional connections, such as amodem connection via a telephone line. America On-Line and CompuServeare examples of third parties that provide service provider servers.

Recently, the amount of e-commerce has been expanding at an exponentialrate. Therefore, businesses desire to connect their own server to theInternet to provide services and advertisements to users of theInternet. However, a business must have a dedicated communications lineto maintain connection to the Internet. A common type of dedicated lineto the Internet is a T1 communications line. It is a problem that atypical T1 connection costs anywhere from five hundred dollars ($500) tofifteen hundred dollars ($1500). This is a substantial expenseconsidering that a traditional Digital Subscriber Line (DSL) connectionto an Internet provider can cost in the range of thirty dollars ($30) toone hundred and fifty dollars ($150).

The problem with a DSL connection is that the connection is notpermanent. Typically, a business or other user uses the DSL line toconnect to a service provider server that is a Dynamic HostConfiguration Protocol (DHCP) server. A DHCP server is a server thatestablishes a connection with a computer system, such as a server for abusiness and assigns the computer system a temporary IP address. It is aproblem that this temporary address for the computer system, such as aserver for business, may take from three days to three weeks topropagate out to other servers for resolution of the IP address for thecomputer system. This amount of time is unacceptable for a business thatwishes to maintain business over the Internet. Therefore, there is aneed for a system that would allow a business to maintain a cheaperInternet connection, such as a DSL connection, while maintaining aconstant connection to the Internet with a permanent or static IPaddress.

SUMMARY OF THE INVENTION

Apparatus and method for providing packet forwarding to a connectedcustomer computer that does not have a static Internet Protocol (IP)address. A service provider computer receives a packet for the connectedcustomer computer. The service provider computer then determines acurrent IP address of the connected customer computer. A new packetcontaining the current IP address of the connected customer computer isthen generated by the service provider computer. The service providercomputer then transmits the new packet to the connected customercomputer.

BRIEF DESCRIPTION OF THE DRAWING

The above and other advantages of this invention may be understood fromthe detailed description below and following drawings:

FIG. 1 illustrating an embodiment of a connection to the Internet of aconnected customer server and service provider server;

FIG. 2 illustrating an embodiment of a processing system that may beeither a service provider server and/or a connected customer server;

FIG. 3 illustrating an embodiment of an overview process executed by aservice provider server to provide a permanent IP address pointer;

FIG. 4 illustrating an embodiment of a process executed by a serviceprovider server for determining a current IP address of a connectedcustomer server;

FIG. 5 illustrating an embodiment of operations of a flow diagram for anupdate process for maintaining a current IP address database ofconnected customer servers;

FIG. 6 illustrating an embodiment of operations of a flow diagram for anexemplary process for verifying a username and password;

FIG. 7 illustrating an embodiment of operations of a flow diagram of aprocess for generating a new packet containing a current IP address of aconnected customer server in accordance with this invention;

FIG. 8 illustrating an embodiment of operations of a flow diagram of aprocess executed by a connected customer server to update a current IPaddress of the connected customer server; and

FIG. 9 illustrating an embodiment of operations of a flow diagram of aprocess executed by a connected customer server to generate an updaterequest message.

DETAILED DESCRIPTION

An embodiment of the present invention is a system that provides astatic Internet Protocol Address pointer to a server having a dynamic IPaddress. The present invention is provided by software executed on aservice provider server and software executed on a connected customercomputer (also referred to as a connected customer server). For purposesof this discussion, service provider computer (also referred to as aservice provider server) is a computer system that is maintained by athird party to provide Internet connections to users that use atraditional dial-up or Digital Subscriber Line (DSL) connection betweena computer system and a connected customer server is a server maintainedby a user that establishes a communication line connection to a serviceprovider server to establish a connection to the Internet. One skilledin the art will envision that the present invention may be implementedby instructions for processes that are executed by the connectedcustomer server and SPS and stored as either software or firmware on theservice provider server and/or the connected customer server.

FIG. 1 illustrates a diagram of a service provider server 101 and aconnected customer server 102 connected to the Internet 105. Connectedcustomer server 102 establishes a communication connection with serviceprovider server 101 via telephone line 111. The communication connectionmay be a conventional dial-up connection using a typical modem as acommunication device, a DSL connection, or any other form of connectionthat allows for communication between two computer systems. Connectedcustomer server 101 is a computer system maintained by a user to provideInternet based applications such as e-mail and web pages that may beaccessed via the Internet.

Service provider server 101 establishes communication connection tocomputer systems of the user via telephone lines 111 to provide anInternet connection to the users. Service provider server 101 isconnected to other computer systems on Internet 105 via communicationspath 110. Communications path 110 is a permanent communication path thatallows high speed transfer of data between computer systems. One skilledin the art will note that communications path 110 may be severalconnections to several different computers systems on the Internet.

A second service provider server 120 is connected to the Internet viacommunications path 121. Communications path 121, like communicationspath 110, is a high speed data transfer line that provides for acontinuous connection to other computer systems on the Internet. Secondservice provider server 120 is shown for exemplary purposes.

Sender computer system 125 is a computer system connected to secondservice provider 120 via communications path 122. One skilled in the artwill recognize that communications path 122 may be any media forconnecting computer systems to provide data transfers and is notpertinent to this invention. Sender computer system 125 is shown forexemplary purposes and may be connected to the Internet in many otherways including, but not limited to, a connection to service providerserver 101 or as a separate node on the Internet.

The present invention may be executed by as many as three separateprocesses. The first process is the packet forwarding processes 151executed by service provider server 101. Database processes 152 executedby service provider server 101 provide a system for storing current IPaddresses of connected customer servers. A third process 153 forrequesting an update of the current IP address of a connected customerserver is executed by connected customer server 102 and provides aprocess for updating a current IP address of the connected customerserver 102. Those skilled in the art will recognize that process 153 mayalso be executed by a server which assigns current IP addresses, such asa DHCP server, which may or may not be the same server as serviceprovider server 101.

FIG. 2 illustrates a block diagram of a typical processing unit 200 thatis representative of a computer system that may be used as eitherservice provider server 101 or connected customer server 102. Processingunit 200 has a processor 201 that executes instructions stored in amemory to perform applications, such as the processes of the presentinvention. Processor 201 may be any conventional processor,microprocessor or a series of processors operatively connected toperform a series of instructions.

Processor 201 is connected to a memory bus 202 to read instructions anddata from memory and to write data to memory. Random Access Memory (RAM)212 is a volatile memory connected to memory bus 202 via path 211. RAM212 stores instructions currently being executed by processor 201 andthe data needed to perform the instructions. Read Only Memory (ROM) 214is connected to memory bus 202 via path 213. ROM 214 storesconfiguration and operating system information needed by processor 201to execute system routines to allow processing unit 200 to performapplications.

Processor 201 is also connected to Input/Output (“I/O”) bus 203. I/O bus203 connects processor 201 to periphery devices to allow processor 201to transmit data to and receive data from periphery devices. Someexemplary devices connected to I/O bus 203 include but are not limitedto memory 222, display 224, I/O device 226, and I/O device 228. Memory222 is connected to I/O bus 203 via path 221 and stores data andinstructions for applications that can be executed by processor 201. Anexample of memory 222 is a magnetic disk drive that reads data from andwrites data to a magnetic disk. Display 224 is connected to I/O bus 203via path 223 and is a device and connected driver that can receive datafrom processor 201 and display the data in a user understandable manner.For example, display 224 may be a monitor and a video card connected tothe bus. Display 224 may also be a device that provides audible soundsfrom received data.

I/O device 226 is connected to I/O bus 203 via path 225. I/O device 226is a device that may either receive input data or output data to a useror other machine.

Some examples of I/O device 226 include but are not limited to akeyboard, a mouse, a microphone, a Local Area Network (LAN) connection,modem, or equivalent device. I/O device 228 is a second I/O device andis connected to I/O bus 203 via path 213.

FIG. 3 illustrates steps of a process 300 executed by service providerserver 101 to provide packet forwarding in accordance with thisinvention. One skilled in the art will recognize that any number ofmethods and programming languages can be used to design executableinstructions that perform process 300.

Process 300 begins in step 301 with service provider server 101maintaining a connected customer server current IP address database. Theconnected customer server current IP address database is a storageprogram used to maintain a record of current IP addresses of connectedcustomer servers fur use in forwarding packets to the connected customerservers.

In step 302, the service provider server receives a packet addressed tothe connected customer server. In step 303, process 300 determines acurrent IP address of the connected customer server. In step 304,process 300 generates a new packet including the current IP address ofthe connected customer server that is determined in step 303. Theservice provider server then transmits the new packet to the connectedcustomer server in step 305. In step 306, a packet including the currentIP address of the connected customer server may optionally be generated.Process 300 may then transmit the packet to the sender of the receivedpacket in step 307 to notify the sender of the current IP address of theconnected customer server for further communications. Process 300 isthen repeated as more packets are received.

FIG. 4 illustrates a process 400 for determining the current IP addressof a connected customer server when a packet is received. Process 400begins in step 401 by reading a recipient identification from the packetreceived. The recipient identification may be an IP address used by theservice provider server to identify a particular connected customerserver. In step 402, process 400 retrieves a record for the recipientidentification from a connected customer server IP address database. Instep 403 process 400 reads the current IP address of the connectedcustomer server from the retrieved record and process 400 ends.

In order to determine the current IP address of the connected customerserver, the service provider server must maintain a database of currentIP addresses in an embodiment. FIG. 5 illustrates a process 500 forupdating records in a database to indicate a current IP address of aconnected customer server when the current customer server IP addresschanges.

Process 500 begins in step 501 with the service provider serverreceiving an update request message. One skilled in the art willrecognize that the update request message is a packet containing therequired information from either the connected customer server or theDHCP server, which may be a separate executable program run by theservice provider server.

In step 502, process 500 retrieves a record for the identified connectedcustomer server. Process 500 determines whether the username andpassword supplied are verified in step 503. This is a securityprecaution to assure non-authorized changing of the current IP addressof a connected customer server. This prevents others from changing theIP address to the address of a competitor or other server. If theusername and password are not verified, process 500 ends.

If the username and password are verified, process 500 reads the currentIP address of the connected customer server from the record in step 504.In step 505, process 500 reads a new current IP address from the updaterequest message. In step 506, process 500 determines whether the newcurrent IP address read from the update request message equals thecurrent IP address read from the record. If the new current IP addressequals the stored current IP address, process 500 ends. Otherwise,process 500 writes the new current IP address into the record in step507 and process 500 ends.

In order to verify the username and password in step 503 of process 500,the service provider server may execute a comparison routine. FIG. 6illustrates an exemplary compare process 600. Process 600 begins in step601 by reading a username from the update request message. In step 602,process 600 reads the username from the record. The usernames read fromthe update request message and the records are compared in step 603. Ifthe usernames do not match process 600 ends causing process 500 (FIG. 5)to end.

If the usernames match, process 600 reads a password from the updaterequest message in step 604. In step 605, process 600 reads a passwordfrom the record. In step 606, process 600 compares the password todetermine whether the passwords match. If the passwords do not match,process 600 ends causing process 500 (FIG. 5) to end. If the passwordsmatch, process 600 allows process 500 to continue to step 504.

In order to generate a new packet having the current IP address of theconnected customer server, the service provider server may masquerade asthe connected IP server and receive and forward packets for the server.Alternatively, the service provider server transmits a message to thesender system indicating the new address. In a second alternate, theservice provider server may replace a recipient IP address in thereceived packet. In a third alternative, the service provider server maygenerate an entirely new packet from the contents of the receivedpacket. FIG. 7 illustrates a flow diagram of an exemplary process forgenerating a new packet.

Process 700 begins in step 701 by reading a sender IP address from thereceived packet. In step 702, process 700 inserts the sender IP addressinto a new packet. In step 703, process 700 inserts the current IPaddress of the connected customer server into the new packet as therecipient of the packet. In step 704, the payload of the received packetis read. The payload is the data contained in the packet. In step 705,the payload read from the received packet is inserted into the payloadof the new packet and process 700 ends.

In order to maintain the database, the service provider server must knowwhen the current IP address of a connected customer server changes. FIG.8 illustrates an exemplary process 800 for informing the serviceprovider server when a current IP address of a connected customer serverchanges. In an embodiment, the connected customer server executesprocess 800. However, it is envisioned that a DHCP server which assignsIP addresses may also directly notify the service provider server. Thecomputer system executing process 800 is therefore left to those skilledin the arts.

Process 800 begins in step 801 with the connected customer serverestablishing a connection with a DHCP server. In step 802, a new currentIP address of the connected customer server is received. In step 803,the current IP address of the connected customer is read from a locationin memory. The new current IP address is then compared to the current IPaddress read from memory in step 804. If the new current IP addressequals the current IP address stored in memory, process 800 ends withoutsending notification since the current IP address has not changed.

If the new current IP address is not equal to the stored current IPaddress, process 800 generates an update request message in step 805.The update request message is one or more data packets that contain thenecessary information needed to perform an update of the database.

In step 806, process 800 transmits the update request message to theservice provider server. Process 800 ends in step 807 by storing the newcurrent IP address in the memory location of the current IP address forfuture use.

FIG. 9 illustrates a process 900 for generating an update requestmessage in step 804 of process 800. Process 900 begins in step 901 withprocess 900 inserting the new current IP address into the update requestmessage. In step 902, process 900 reads a username from memory. Process900 inserts the username into the update request message in step 903. Instep 904, process 900 reads a password from memory. The password isinserted into the update request message in step 905 and process 900ends.

When the operations of computers or servers are implemented in softwareit should be noted that the software can be stored on anycomputer-readable medium for use by or in connection with any computerrelated system or method. In the context of this document, acomputer-readable medium is an electronic, magnetic, optical, or otherphysical device or means that can contain or store a computer programfor use by or in connection with a computer related system or method.Computers or servers can be embodied in any computer-readable medium foruse by or in connection with an instruction execution system, apparatus,or device such as a computer-based system, processor-containing system,or other system that can fetch the instructions from the instructionexecution system, apparatus, or device and execute the instructions. Inthe context of this document, a “computer-readable medium” can be anymeans that can store, communicate, propagate, or transport the programfor use by or in connection with the instruction execution system,apparatus, or device. For example, the computer-readable medium can be,but is not limited to, an electronic, magnetic, optical,electromagnetic, infrared, or semiconductor system, apparatus, device,or propagation medium. More specific examples (a non-exhaustive list) ofthe computer-readable medium would include the following: an electricalconnection (electronic) having one or more wires, a portable computerdiskette (magnetic), a random access memory (RAM) (electronic), aread-only memory (ROM) (electronic), an erasable programmable read-onlymemory (EPROM, EEPROM, or Flash memory) (electronic), an optical fiber(optical), and a portable compact disc read-only memory (CDROM)(optical). Note that the computer-readable medium could even be paper oranother suitable medium upon which the program is printed, as theprogram can be electronically captured via optical scanning of the paperor other medium and then compiled, interpreted or otherwise processed ina suitable manner, if necessary, and stored in a computer memory.

In an alternative embodiment, where computers or servers are implementedin hardware, they can be implemented with any or a combination of thefollowing technologies, which are each well known in the art: a discretelogic circuit(s) having logic gates for implementing logic functionsupon data signals, an application specific integrated circuit (ASIC)having appropriate combinational logic gates, a programmable gatearray(s) (PGA), a field programmable gate array (FPGA), etc.

1. A method that provides packet forwarding to a connected customercomputer that does not have a static internet Protocol (IP) address,comprising the steps of: receiving a packet for said connected customercomputer at a service provider server; determining a current IP addressof said connected customer computer at the service provider server;generating a new packet containing said current IP address; transmittingsaid new packet to said customer computer; receiving a new current IPaddress in said connected customer computer; determining whether saidnew current IP address matches said current IP address in said connectedcustomer computer; and transmitting an update request message from saidconnected customer computer to said service provider computer responsiveto said new current IP address not matching said current IP address. 2.The method of claim 1 further comprising the step of: maintaining acustomer Internet Protocol (IP) address database that includes saidcurrent IP address of said connected customer computer.
 3. The method ofclaim 2 wherein said step of determining said current IP addresscomprises the steps of: retrieving a record of said connected customercomputer from said customer IP address database; and reading saidcurrent IP address from said record.
 4. The method of claim 2 whereinsaid step of maintaining said customer IP address database comprises thestep of: updating a record for a connected customer computer responsiveto said current IP address of said connected customer computer changing.5. The method of claim 4 wherein said step of updating said recordcomprises the steps of: receiving an update request message from saidconnected customer computer; verifying a username and password in saidmessage; and receiving said current IP address in said message.
 6. Themethod of claim 5 wherein said step of verifying said username andpassword comprises the steps of: reading said username from saidmessage; reading said password from said message; reading username andpassword from said record; and comparing said username and password insaid record to said username and password read from said message.
 7. Themethod of claim 5 wherein said step of updating said connected customerIP address database comprises the step or: preventing said updateresponsive to said username and password not being verified.
 8. Themethod of claim 5 wherein said step of updating said record comprisesthe steps of; determining whether said current IP address in said updaterequest message matches said current IP address in said record; andreplacing said current IP address in said record with said current IPaddress in said message responsive to said current IP address in saidrecord not matching said IP address in said record.
 9. The method ofclaim 1 wherein said step of generating said new packet comprises thestep of: replacing art IP address of said connected customer computer insaid packet with said Current IP address.
 10. The method of claim 1wherein said step of generating said new packet comprises the steps of:reading a sender IP address from said received packet; inserting saidsender IP address in said new packet; inserting said current IP addressin said packet; reading a payload from said received packet; andinserting said payload into said new packet.
 11. The method of claim 1further comprising the step of: transmitting a packet with said currentIP address of said connected customer computer to a sender.
 12. Themethod of claim 1 further comprising the step of: storing said nowcurrent IP address in a memory responsive to said new current IP addressnot matching said current IP address.
 13. The method of claim 1 whereinsaid step of determining whether said new current IP address matchessaid current IP address comprises the steps of: reading said current IPaddress from memory in said connected customer computer; and comparingsaid current IP address from memory to said new current IP address insaid connected customer computer.
 14. The method of claim 1 furthercomprising the step of: generating said update request message.
 15. Themethod of claim 14 wherein said step generating said update requestmessage comprises the step of inserting said new current IP address insaid update request message.
 16. The method of claim 14 wherein saidstep of generating said update request message comprises the steps of:inserting a username into said update request message; and inserting apassword into said update request message.
 17. A method that providespacket forwarding to a connected customer computer that does not have astatic internet Protocol (IP) address, comprising the steps of:establishing a connection between a connected customer computer and adynamic host configuration protocol (DHCP) server; receiving a newcurrent IP address at the connected customer computer from the DHCPserver; sending an update request message from the connected customercomputer to the service provider server regarding the new current IPaddress; storing the new current IP address of the connected customercomputer in a database at the service provider server; receiving apacket for the connected customer computer at the service providerserver, wherein the packet includes a recipient identification IPaddress used to identify the connected customer computer by the serviceprovider; determining the new current IP address of the connectedcustomer computer from the database; and forwarding packet for theconnected customer computer using the new current IP address of theconnected customer computer to enable a user of the connected customercomputer to maintain a relatively inexpensive temporary internetconnection while retaining a permanent address on the internet that canbe propagated through other servers on the internet to provide asearchable permanent address for the user on the internet.
 18. A methodas in claim 17, wherein forwarding the packet further comprisesforwarding the packet for the connected customer computer by replacingthe recipient identification IP address in the packet with the newcurrent IP address.
 19. A method as in claim 17, wherein forwarding thepacket further comprises forwarding the packet for the connectedcustomer computer by generating an entirely new packet from the contentsof the received packet and directing the new packet to the connectedcustomer computer using the new current IP address.